import java.util.ArrayList;
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        //前k个高频元素
        int[] nums = {1,1,1,2,2,3};
        int k = 2;
        Test01 test01 = new Test01();
        int[] array = test01.topKFrequent(nums,k);
        System.out.println(Arrays.toString(array));
    }
}
class Test01{
    public int[] topKFrequent(int[] nums, int k) {
        if(nums.length<2){
            return nums;
        }
        Arrays.sort(nums);
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        list.add(new ArrayList<Integer>());
        list.get(0).add(nums[0]);
        int n=0;

        for(int i=1;i<nums.length;i++){
            if(nums[i]!=nums[i-1]){
                n++;
                list.add(new ArrayList<Integer>());
                list.get(n).add(nums[i]);
            }else{
                list.get(n).add(nums[i]);
            }
        }
        int [] arr= new int[list.size()];
        for(int i=0;i<arr.length;i++){
            arr[i]=list.get(i).size();
        }
        Arrays.sort(arr);
        int [] ans = new int[k];
        int a=0;
        for(int i=arr.length-1;i>=arr.length-k;i--){
            for(int j=0;j<list.size();j++){
                int size=arr[i];
                if(list.get(j).size()==size){
                    ans[a]=list.get(j).get(0);
                    a++;
                    list.remove(j);
                    break;
                }
            }
        }
        return ans;
    }
}
